From: Ian Campbell Date: Tue, 24 May 2011 09:14:10 +0000 (+0100) Subject: libxc: save/restore: remove static context variables X-Git-Tag: archive/raspbian/4.8.0-1+rpi1~1^2~10314 X-Git-Url: https://dgit.raspbian.org/%22http://www.example.com/cgi/success//%22http:/www.example.com/cgi/success/?a=commitdiff_plain;h=bc95f3a87c5f95550d3252d058122c8a8e769b8c;p=xen.git libxc: save/restore: remove static context variables 20544:ad9d75d74bd5 and 20545:cc7d66ba0dad seemingly intended to change these global static variables into stack variables but didn't remove the static qualifier. Also zero the entire struct once with memset rather than clearing fields piecemeal in two different places. Signed-off-by: Ian Campbell Acked-by: Ian Jackson Committed-by: Ian Jackson Acked-by: Vincent Hanquez --- diff --git a/tools/libxc/xc_domain_restore.c b/tools/libxc/xc_domain_restore.c index 6baf207f98..d475b2dc14 100644 --- a/tools/libxc/xc_domain_restore.c +++ b/tools/libxc/xc_domain_restore.c @@ -1133,23 +1133,19 @@ int xc_domain_restore(xc_interface *xch, int io_fd, uint32_t dom, int orig_io_fd_flags; - static struct restore_ctx _ctx = { - .live_p2m = NULL, - .p2m = NULL, - }; - static struct restore_ctx *ctx = &_ctx; + struct restore_ctx _ctx; + struct restore_ctx *ctx = &_ctx; struct domain_info_context *dinfo = &ctx->dinfo; pagebuf_init(&pagebuf); memset(&tailbuf, 0, sizeof(tailbuf)); tailbuf.ishvm = hvm; - /* For info only */ - ctx->nr_pfns = 0; - if ( superpages ) return 1; + memset(ctx, 0, sizeof(*ctx)); + ctxt = xc_hypercall_buffer_alloc(xch, ctxt, sizeof(*ctxt)); if ( ctxt == NULL ) diff --git a/tools/libxc/xc_domain_save.c b/tools/libxc/xc_domain_save.c index 4deca18a16..b9031efea1 100644 --- a/tools/libxc/xc_domain_save.c +++ b/tools/libxc/xc_domain_save.c @@ -958,11 +958,8 @@ int xc_domain_save(xc_interface *xch, int io_fd, uint32_t dom, uint32_t max_iter unsigned long mfn; struct outbuf ob; - static struct save_ctx _ctx = { - .live_p2m = NULL, - .live_m2p = NULL, - }; - static struct save_ctx *ctx = &_ctx; + struct save_ctx _ctx; + struct save_ctx *ctx = &_ctx; struct domain_info_context *dinfo = &ctx->dinfo; int completed = 0; @@ -976,6 +973,8 @@ int xc_domain_save(xc_interface *xch, int io_fd, uint32_t dom, uint32_t max_iter outbuf_init(xch, &ob, OUTBUF_SIZE); + memset(ctx, 0, sizeof(*ctx)); + /* If no explicit control parameters given, use defaults */ max_iters = max_iters ? : DEF_MAX_ITERS; max_factor = max_factor ? : DEF_MAX_FACTOR;